<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>函数基础回顾</title>
</head>
<body>


<!--
  函数：
    1. 理解：
      - 函数也是对象
      - 函数是特殊的对象，因为函数具备行为，通过调用可以执行内部语句
    2. 定义函数方式:
      - 函数声明式：function fun(){}
      - 函数表达式： var fun2 = function(){}
    3. 调用函数方式：
      - test()
      - new test()
      - obj.test()
      - test.call/apply(obj)
    4. 为什么要设计函数(函数的作用，什么时候使用)
      - 代码结构分明
      - 功能点清晰，封装函数思想： 一个函数通常只有一个指定的功能
      - 复用，提高代码性能
-->

<script type="text/javascript">
  var obj = {};
  obj.name = 'wade';
  var a = 123;
  //  函数具备行为
  function fun() {
    var a = 'abc'
    console.log(a);
  }
  function fun2(){
    var a = 123;
  }

  var fun3 = function(){}

  /*
  * 为什么要设计函数
  *   1. 简化代码的编写，减少重复代码
  *   2. 功能点明确， 复用
  *   3. 隔离变量，减少命名污染
  * */

  fun();
  var obj2 = {
    name: 'kobe'
  }
  function test(num, num2) {
    console.log(this, num, num2); // window
  }

  // call|| apply 用于修改this指向的(强制绑定this), 自动调用修改完this指向的函数
  // test.call(指定的this指向对象， 参数);
  test.call(obj2, 123, 234);
  test.apply(obj2, [123, 234])

</script>


</body>
</html>